AssumeRole(スイッチロール)を理解して、AWSへのデプロイを少しでも安全に実施しよう #devio2021
DevelopersIO 2021 Decadeでビデオセッションを公開しました。
概要
CloudFormationをデプロイするユーザのアクセスキーが漏れてしまったら?と心配するあなたへ。 AssumeRoleを活用すれば、アクセスキーが漏洩しても被害が最小限になるIAMユーザでデプロイできます。
動画
スライド
コメンタリー
テーマ選定の理由は、自分が知りたかったから
ある程度、AWSを使っていると、画面ボタンポチポチではなく、Infrastructure as Code(IaC)で管理することが多くなります。AWSでIaCを実現するツールはいくつかあります。
- AWS CloudFormtaion
- AWS SAM
- AWS CDK
- Serverless Framework
- Terraform
そして、これらのIaCツールとIAMユーザの「アクセスキー」は、切っても切り離せない関係です(一部例外が最近出てきました(嬉しい))。
ベストプラクティス的には、アクセスキーをしっかり管理したり、最小限の権限を付与したりと言われますが、「で、実際はどうやればいいの???」となります(なりました)。 分からないですよね。そこで、具体的な手段をまとめました。
AssumeRoleを活用してデプロイする
- 少しでも安全にデプロイするために、AssumeRoleを活用しよう
- そのために、AssumeRoleの説明をしよう
- AssumeRoleの説明をするために、IAMの説明をしよう
上記の流れを逆にして、本ビデオセッション(資料)では、4つの事柄を説明しています。
AssumeRoleを活用したデプロイの全体像
全体像はこちらです。動画やスライドでは、紙芝居の形式で紹介しているので、ぜひご覧ください。
下記の紹介もしています。
- コマンド例(ユーザがAssumeRoleする)
- コマンド例(デプロイする)
- 少しでも安全にデプロイできる理由
- AssumeRoleを行うスクリプト
少しでも安全にデプロイできる理由
下記を紹介しています。
- IAMロール自体は、AssumeRoleの権限だけ
- IAMロール(デプロイ用)にAssumeRoleされても、最小限の権限だけ
- IAMロール(CloudFormation用)を使わない場合、IAMロール(デプロイ用)の権限不足でほぼ何もできない
- IAMロール(デプロイ用)の
Resource
でスタック名を制限していれば、他のスタックに影響なし - CloudFormationで
DeletionPolicy
を指定すれば、CloudFormationスタックを削除されても、データ喪失は防げる - IANロール(CloudFormation用)は強い権限を持つが、IAMユーザは直接使えない
参考リンク
おすすめ
ほか
- AWS Identity and Access Management によるアクセスの制御 - AWS CloudFormation
- IAM ユーザー - AWS Identity and Access Management
- IAM ユーザーグループ - AWS Identity and Access Management
- IAM ロール - AWS Identity and Access Management
- AWS リソースのアクセス管理 - AWS Identity and Access Management
- DeletionPolicy 属性 - AWS CloudFormation
さいごに
少しでも安全にデプロイする方法の参考になれば幸いです。
- 「IAM」発言は92回でした(本人調べ)
- 「AssumeRole」発言は34回でした(本人調べ)